import { mars3d, closeContextMenu, setGraphicLayer, graphicLayer, setMap, widget, store, Cesium } from "./global";
import mapOptions from "@/config/map.config";
import { getCoverage } from "@/api/coverage";
import { monitor } from "@/utils/draw/draw";
import { addrLoading } from "@/utils/loading";
/**
 * @function initMap 加载地图
 * @param key 传入地图唯一key，防止同一页面有两个以上地图导致的id冲突，默认时间戳
 * @author 染指你的唇 2024-1-31 14:40:58
 */

export function initMap(id: string) {
    // 创建三维地球场景
    const map = new mars3d.Map(id, mapOptions);
    // new mars3d.thing.TerrainClip({
    //     czm: false,
    // });
    // map.onlyVertexPosition = true;
    // console.log(map);
    // 地球加载动画
    map.openFlyAnimation().then((load: any) => {
        if (load) {
            console.log("地图加载完成^_^");
            const graphicLayer = new mars3d.layer.GraphicLayer({
                zIndex: 999,
                id: `graphicLayer${new Date().getTime()}`,
                isRestorePositions: true,
                // hasEdit: true,
            });
            map.addLayer(graphicLayer);
            // 设置地图(map, graphicLayer);
            setMap(map);
            setGraphicLayer(graphicLayer);

            // 地图加载后,获取地址栏参数的操作
            setTimeout(() => {
                addrLoading(() => {
                    // 地图绑定事件
                    mapBindingFun(map);
                    // 监听图层对象绘制情况
                    monitor(graphicLayer);
                    // 获取图层树数据
                    getCoverage();
                    // loadTurf();
                });
            }, 300);

            // 地图测试函数
            mapTest(map);
        }
    });
}
/**
 * @function mapBindingFun 绑定地图对象事件
 * @param map 地图对象
 */
function mapBindingFun(map: any) {
    map.on(mars3d.EventType.click, (e: any) => {
        // 点击地图
        mapClickOrRightClick(e);
    }).on(mars3d.EventType.rightClick, (e: any) => {
        // 右击地图
        // mapClickOrRightClick(e);
        console.log("地图右击事件", e);
    });
}
/**
 * @function mapClickOrRightClick 地图点击或右击事件
 */
const mapClickOrRightClick = (e: any) => {
    // 地图点击或右击事件
    // e.stopPropagation();
    // 如果右键菜单是打开状态，关闭右键菜单
    closeContextMenu();
    widget.property = false;
    // let id = store.rightClickData.id;
    // let graphic = graphicLayer.getGraphicById(id);
    // graphic.stopEditing();
};
/**
 * 地图测试函数
 * @param map 地图对象
 */
const mapTest = (map: any) => {
    // api.yunsfarm.com
    // 加个模型
    const tiles3dLayer = new mars3d.layer.TilesetLayer({
        id: 1987,
        name: "桥梁",
        url: "http://www.yunsfarm.com:8887/0/terra_pnts/tileset.json",
        maximumScreenSpaceError: 16,
        cullWithChildrenBounds: false,
        // clampToGround: true,
        // flyTo: true,
        position: { lat: 31.125180668712098, lng: 108.14402452220699, },
        // rotation: { z: 17.5 },
        // 高亮时的样式
        highlight: {
            // all: true, //全部整体高亮，false时是构件高亮
            type: mars3d.EventType.click, // 默认为鼠标移入高亮，也可以指定click单击高亮
            color: "#00FF00",
        },
        popup: "all",
    });
    map.addLayer(tiles3dLayer);
};
